<html>
<title>Release Notes for Apache Derby 10.7.1.1</title>
<body>
<h1>
<a name="Release Notes for Apache Derby 10.7.1.1"></a>Release Notes for Apache Derby 10.7.1.1</h1>
<blockquote>
<p>These notes describe the difference between Apache Derby release 10.7.1.1 and the preceding release 10.6.2.1.</p>
</blockquote>
<ul>
<li>
<a href="#Overview">Overview</a>
</li>
<li>
<a href="#New Features">New Features</a>
</li>
<li>
<a href="#Bug Fixes">Bug Fixes</a>
</li>
<li>
<a href="#Issues">Issues</a>
</li>
<li>
<a href="#Build Environment">Build Environment</a>
</li>
<li>
<a href="#Verifying Releases">Verifying Releases</a>
</li>
</ul>
<h2>
<a name="Overview"></a>Overview</h2>
<blockquote>


<p>
The most up to date information about Derby releases can be found on the
<a href="http://db.apache.org/derby/derby_downloads.html">Derby download page</a>.
</p>


<p>
Apache Derby is a pure Java relational database engine using standard SQL and
JDBC as its APIs. More information about Derby can be found on the
<a href="http://db.apache.org/derby/">Apache web site</a>.
Derby functionality includes:
</p>


<ul>

<li>Embedded engine with JDBC drivers</li>

<li>Network Server</li>

<li>Network client JDBC drivers</li>

<li>Command line tools: ij (SQL scripting), dblook (schema dump) and sysinfo (system info)</li>

</ul>


</blockquote>
<h2>
<a name="New Features"></a>New Features</h2>
<blockquote>


<p>
This is a feature release. The following new features were added:
</p>


<ul>


<li>
<b>Definer's rights</b> - Procedures and functions can now run with their creators' privileges, rather than with the current user's permissions.</li>
	

<li>
<b>BOOLEAN data type</b> - Boolean is now a legal data type for columns, routine arguments, and function return values.</li>
	

<li>
<b>Table truncation</b> - A new TRUNCATE TABLE command drops all rows in a table quickly.</li>
	

<li>
<b>Query plan browsing</b> - A new PlanExporter tool helps developers visualize query plans better.</li>


<li>
<b>Unicode database names</b> - Remote clients can now use database names which include Unicode characters outside the ASCII codeset.</li>


</ul>


</blockquote>
<h2>
<a name="Bug Fixes"></a>Bug Fixes</h2>
<blockquote>
<p>The following issues are addressed by Derby release 10.7.1.1. These issues are not addressed in the preceding 10.6.2.1 release.</p>
<table border="2">
<tr>
<td><b>Issue Id</b></td><td><b>Description</b></td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4911">DERBY-4911</a></td><td>restoreIntrFlagIfSeen may throw ShutdownException causing confusing console stack trace at server shutdown</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4908">DERBY-4908</a></td><td>Instability in CheckConstraintTest.testBuiltInFunctions</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4904">DERBY-4904</a></td><td>Plan exporter doesn't work if XPLAIN schema has special characters</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4903">DERBY-4903</a></td><td>Plan exporter tool produces broken output if query contains less-than operator</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4902">DERBY-4902</a></td><td>Encoding problem in output from plan exporter</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4899">DERBY-4899</a></td><td>Refactor access to primary structures in AlterTableConstantAction</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4898">DERBY-4898</a></td><td>testGetURL test fails in nightly runs.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4895">DERBY-4895</a></td><td>Thread local TableDescriptor#referencedColumnMap is not removed from app threads when Derby is shut down</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4893">DERBY-4893</a></td><td>Allow Java 5 language constructs in build code</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4892">DERBY-4892</a></td><td>Unsafe use of BigDecimal constructors</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4891">DERBY-4891</a></td><td>Enable testing of boolean type in ParameterMappingTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4890">DERBY-4890</a></td><td>Different string to boolean conversion on embedded and client</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4889">DERBY-4889</a></td><td>Different byte to boolean conversion on embedded and client</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4888">DERBY-4888</a></td><td>ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4885">DERBY-4885</a></td><td>Reduce lock timeout in SavepointJdbc30Test</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4884">DERBY-4884</a></td><td>DatabasePropertyTestSetup cannot change static properties in encrypted databases</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4881">DERBY-4881</a></td><td>Deadlock accessing SYS.SYSSTATISTICS</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4880">DERBY-4880</a></td><td>Unchecked warnings in JMXManagementService and VTI demos</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4879">DERBY-4879</a></td><td>Lookahead warning from ij.jj</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4878">DERBY-4878</a></td><td>Silence sanity info message when running "ant -q"</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4877">DERBY-4877</a></td><td>Unchecked warnings in jdbc4 test suite</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4876">DERBY-4876</a></td><td>Deprecation warnings in VTITemplate</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4873">DERBY-4873</a></td><td>NullPointerException in testBoundaries with ibm jvm 1.6</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4870">DERBY-4870</a></td><td>Reference Manual map file issues with out-of-order/duplicate topics</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4868">DERBY-4868</a></td><td>Remove Types.BIT/Types.BOOLEAN switch in JVMInfo</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4867">DERBY-4867</a></td><td>Update BaseTestCase.isSunJVM() to accept Oracle</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4866">DERBY-4866</a></td><td>Simplify SYSCS_BULK_INSERT with IdUtil.mkQualifiedName()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4865">DERBY-4865</a></td><td>Remove Maven artifact history section from maven2/README.txt</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4860">DERBY-4860</a></td><td>RunSuite on derbylang and other subsuites fails with java.lang.NoClassDefFoundError because of prepended ^</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4859">DERBY-4859</a></td><td>Missing doPrivileged in DatabaseClasses.WriteClassFile()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4858">DERBY-4858</a></td><td>Remove deprecated code for generating CHANGES.html</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4857">DERBY-4857</a></td><td>Utilize the SOAP API to fetch JIRA issue list for release notes generation</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4840">DERBY-4840</a></td><td>Reference topic example elements lack titles</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4836">DERBY-4836</a></td><td>many failures with IBM 1.5 and 1.6 on windows after test InternationalConnectTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4835">DERBY-4835</a></td><td>Trigger plan does not recompile with upgrade from 10.5.3.0 to 10.6.1.0 causing  java.lang.NoSuchMethodError</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4829">DERBY-4829</a></td><td>dblook fails if there is a column privilege on a table whose name contains a quote</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4828">DERBY-4828</a></td><td>Import fails if column names contain double quotes</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4827">DERBY-4827</a></td><td>Modify the documentation for the 10.7 release regarding the UTF-8 CCSID manager</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4826">DERBY-4826</a></td><td>Documentation tasks for new minor release of Derby</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4825">DERBY-4825</a></td><td>Assert failure in LargeDataLocksTest.testGetCharacterStream() because of wrong number of locks</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4822">DERBY-4822</a></td><td>DropSchemaConstantAction: could reuse the current connection provided by the available activation object</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4815">DERBY-4815</a></td><td>Override mechanism for modules.properties works backwards</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4812">DERBY-4812</a></td><td>ReplicationMessageTransmit run does not unwrap PrivilegedActionException which can lead to failure of replicationTests.ReplicationRun_Local_StateTest_part1_1</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4810">DERBY-4810</a></td><td>setTimestamp() methods don't agree on trailing zeros</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4806">DERBY-4806</a></td><td>SysinfoCPCheckTest fail on different Windows platforms on 10.6.2.0 release candidate</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4804">DERBY-4804</a></td><td>Make database used in store.OSReadOnlyTest fully read-only</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4803">DERBY-4803</a></td><td>Sequences do not work in INSERT/SELECT</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4802">DERBY-4802</a></td><td>Document the TRUNCATE command</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4799">DERBY-4799</a></td><td>IllegalArgumentException when generating error message on server</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4796">DERBY-4796</a></td><td>Missing escape for apostrophes in many messages</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4791">DERBY-4791</a></td><td>LIKE operator optimizations and concatenation</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4786">DERBY-4786</a></td><td>Shutdown command without username and password should work with mixed client and network server releases.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4781">DERBY-4781</a></td><td>suites.All fails completely with  Failed to invoke suite():java.lang.reflect.InvocationTargetException  because of XplainStatisticsTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4777">DERBY-4777</a></td><td>Different behavior in Client and Embedded modes when update on an invalid cursor</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4774">DERBY-4774</a></td><td>Investigate character set and encoding issues of PlanExporter Tool</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4772">DERBY-4772</a></td><td>Data truncation error with XPLAIN-functionality enabled</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4767">DERBY-4767</a></td><td>Detailed prompt for Error XCL16 is different between Client and Embed</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4765">DERBY-4765</a></td><td>Convert "org.apache.derbyTesting.functionTests.tests.derbynet.DerbyNetNewServer" to junit.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4764">DERBY-4764</a></td><td>Files with missing ASF license headers</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4760">DERBY-4760</a></td><td>test failure in derbynet/testProtocol.java with ibm jvms</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4758">DERBY-4758</a></td><td>Adding documentation about the PlanExporter Tool</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4756">DERBY-4756</a></td><td>Silence deprecation warnings for JDBC 4 stubs</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4755">DERBY-4755</a></td><td>DERBY-4601 added a new message to derby.log during engine shutdown and it changed the database shutdown message. Need to update docs with that information</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4752">DERBY-4752</a></td><td>CheapDateFormatter returns incorrect and invalid date strings</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4746">DERBY-4746</a></td><td>(Server) Implement UTF8 support on DRDA</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4743">DERBY-4743</a></td><td>Attempt to access a DECLARE GLOBAL TEMPORARY TABLE after commit in an XA transaction in Network server fails.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4738">DERBY-4738</a></td><td>correct error prompt for nonpositive length in Blob.setBytesX()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4737">DERBY-4737</a></td><td>Document the BOOLEAN datatype</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4732">DERBY-4732</a></td><td>Release system resources in CanonTestCase thoroughly</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4730">DERBY-4730</a></td><td>Add BOOLEAN to the list of datatypes returned by DatabaseMetaData.getTypeInfo()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4723">DERBY-4723</a></td><td>Using an instance lock to protect static shared data in EmbedPooledConnection</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4720">DERBY-4720</a></td><td>Allow boolean-valued expressions in select lists</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4718">DERBY-4718</a></td><td>Correct wrong main() method in LocalizedDisplayScriptTest and LocalizedAttributeScriptTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4716">DERBY-4716</a></td><td>Enable BOOLEAN typed columns</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4714">DERBY-4714</a></td><td>Clean up some edge-case uses of the BOOLEAN keyword</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4711">DERBY-4711</a></td><td>Hung thread after another thread is interrupted</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4709">DERBY-4709</a></td><td>Create test that parse client trace file to detect round-trips for Derby-4653</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4707">DERBY-4707</a></td><td>convert ShutdownDatabase.java into junit</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4704">DERBY-4704</a></td><td>Incorrect nullability when casting non-nullable VARCHAR to BOOLEAN</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4703">DERBY-4703</a></td><td>Make it possible for table functions to return BOOLEAN columns</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4696">DERBY-4696</a></td><td>Remove the outdated content about "frameworks subdirectory" in "getstartderby"</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4695">DERBY-4695</a></td><td>Internal assignment of tablenumer, columnnumber looks wrong in query tree, although no ill effects are seen.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4692">DERBY-4692</a></td><td>Unions between BOOLEAN and non-BOOLEAN datatypes should be rejected</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4690">DERBY-4690</a></td><td>Too few arguments when generating AM_RECORD_NOT_FOUND error</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4685">DERBY-4685</a></td><td>Dead/unreachable code in OpenConglomerate.lockPositionForWrite()</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4684">DERBY-4684</a></td><td>Correct the implicit casting of other types to BOOLEAN</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4680">DERBY-4680</a></td><td>Add documentation for routines running with definer's rights</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4674">DERBY-4674</a></td><td>BooleanValuesTest fails if Xalan is not available</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4667">DERBY-4667</a></td><td>BootLockTest.testBootLock()  sometimes fails with connection refused.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4665">DERBY-4665</a></td><td>Unidiomatic error handling in TimestampArithTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4658">DERBY-4658</a></td><td>Allow explicit casts of string values to BOOLEAN</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4653">DERBY-4653</a></td><td>Avoid unnecessary round-trip for commit  in the client driver</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4626">DERBY-4626</a></td><td>Timestamp truncated when converted to string with explicit calendar</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4625">DERBY-4625</a></td><td>TIMESTAMP function doesn't accept nanoseconds</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4624">DERBY-4624</a></td><td>Broken logic for avoiding testing across midnight in TimestampArithTest</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4613">DERBY-4613</a></td><td>Make client driver treat BOOLEAN columns the same way as the embedded driver does.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4601">DERBY-4601</a></td><td>Shutting down just a single database should log a different message than shutting down the system</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4587">DERBY-4587</a></td><td>Add tools for improved analysis and understanding of query plans and execution statistics</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4583">DERBY-4583</a></td><td>TRUE by itself is not accepted in WHERE</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4577">DERBY-4577</a></td><td>An expanding update fails with an nospc.U error.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4551">DERBY-4551</a></td><td>Allow database user to execute stored procedures with same permissions as database owner and/or routine definer</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4531">DERBY-4531</a></td><td>Client setCharacterStream closes its Reader argument stream in finalizer</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4459">DERBY-4459</a></td><td>Verification error at execute-time when an outer function which takes a primitive arg is wrapped around an inner function which returns the corresponding Java wrapper object</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4449">DERBY-4449</a></td><td>ArrayIndexOutOfBoundsException when inserting DEFAULT into unspecified column</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4371">DERBY-4371</a></td><td>Non-selected columns for SELECT DISTINCT allowed in ORDER BY clause if ordered by expression</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4343">DERBY-4343</a></td><td>ASSERT FAILED calling setTransactionIsolation checking isolation_ == level   on  pooled connection</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4315">DERBY-4315</a></td><td>Attempt to reuse streams in client on insert gives protocol exception and inserts wrong data</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4314">DERBY-4314</a></td><td>With derby client setTransactionIsolation executes and commits even if isolation has not changed</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4241">DERBY-4241</a></td><td>Improve transition from read-only to writable Clob representation</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4083">DERBY-4083</a></td><td>BTreeScan.delete() throws AM_RECORD_NOT_FOUND if record is found</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4067">DERBY-4067</a></td><td>ClientConnectionPoolDataSource.getPooledConnection and ClientXADataSource.getXAConnection ignore connection attributes</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-4052">DERBY-4052</a></td><td>SQLChar.copyState() doesn't copy localeFinder</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3953">DERBY-3953</a></td><td>VIEWS which invoke user-coded functions may return different results depending on who SELECTs from them</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3944">DERBY-3944</a></td><td>CHECK constraints involving user-coded functions may return different results depending on who performs the triggering INSERT/UPDATE</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3898">DERBY-3898</a></td><td>Blob.setBytes differs between embedded and client driver when the specified length is invalid</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3801">DERBY-3801</a></td><td>Convert "org.apache.derbyTesting.functionTests.tests.lang.holdCursorIJ.sql" to junit.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3727">DERBY-3727</a></td><td>Improve error information reported when encountering "ERROR XSDB3: Container information cannot change once written: was 103, now 80"</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3644">DERBY-3644</a></td><td>NetworkServerControl.ping() on trunk against 10.3.2.1 and older servers give 'DRDA_InvalidReplyHeader2.S:Invalid reply header from network server: Invalid string . Plaintext connection attempt to an SSL enabled server?'</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-3173">DERBY-3173</a></td><td>Removed cached String objects from SQLDate, SQLTime and SQLTimestamp</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2785">DERBY-2785</a></td><td>ij "describe" built in command cannot describe a table named "run"</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2419">DERBY-2419</a></td><td>Tighten encapsulation of state in TestConfiguration</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2156">DERBY-2156</a></td><td>message XSDB8 and 42Y32 have references to db2j</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-2011">DERBY-2011</a></td><td>DROP INDEX, TRIGGER and VIEW contain examples in the syntax section in the reference manual.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1963">DERBY-1963</a></td><td>Routine parameter names displayed by dblook are not escaped.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1958">DERBY-1958</a></td><td>improve XSDG3 error to print container, actual i/o operation, and file name.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1938">DERBY-1938</a></td><td>Add support for setObject(&lt;arg&gt;, null)</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1511">DERBY-1511</a></td><td>SELECT clause without a WHERE, causes an Exception when extracting a Blob from a database</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1482">DERBY-1482</a></td><td>Update triggers on tables with blob columns stream blobs into memory even when the blobs are not referenced/accessed.</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1439">DERBY-1439</a></td><td>Investigate removing the antiGC thread in embedded Derby</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-1425">DERBY-1425</a></td><td>testProtocol hangs with 10.1 client talking to 10.2 server</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-499">DERBY-499</a></td><td>Expose BOOLEAN datatype to end users</td>
</tr>
<tr>
<td><a href="https://issues.apache.org/jira/browse/DERBY-462">DERBY-462</a></td><td>DatabaseMetaData method supportsConvert() returns true</td>
</tr>
</table>
</blockquote>
<h2>
<a name="Issues"></a>Issues</h2>
<blockquote>
<p>Compared with the previous release (10.6.2.1), Derby release 10.7.1.1 introduces the following new features and incompatibilities. These merit your special attention.</p>
<ul>
<li>
<a href="#Note for DERBY-4786">
<p>Note for DERBY-4786: 
A shutdown request with no user credentials to a 10.3 (or earlier)
server from a newer client will give multiple messages on both the server and client sides.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4777">
<p>Note for DERBY-4777: 
When a network client attempts to update through an invalid cursor,
Derby now throws 'ERROR 42X30' instead of 'ERROR XJ202'.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4772">
<p>Note for DERBY-4772: 
Column types in the XPLAIN tables changed to accommodate more data.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4577">
<p>Note for DERBY-4577: 
  UPDATE statements should not raise the following error: "ERROR nospc: nospc.U"
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-4314">
<p>Note for DERBY-4314: 
Derby client <tt>Connection.setTransactionIslation</tt> will not commit if isolation level does not change.
</p>
</a>
</li>
<li>
<a href="#Note for DERBY-1511">
<p>Note for DERBY-1511: 
Queries will not bulk fetch rows with large object columns if the
cursor is holdable.
</p>
</a>
</li>
</ul>
<hr>
<h3>
<a name="Note for DERBY-4786"></a>Note for DERBY-4786</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
A shutdown request with no user credentials to a 10.3 (or earlier)
server from a newer client will give multiple messages on both the server and client sides.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
A shutdown request from a 10.4 (or higher) client with no user
credentials to a 10.3 (or earlier) server shows the following messages
on the server side. (Note that the version info about the product
changes depending on the release being used for the server.)
</p>


<pre>
java.lang.Throwable: DRDA_UnknownProtocol.S, 2
Execution failed because of a Distributed Protocol Error: DRDA_Proto_SYNTAXRM;CODPNT arg = 0; Error Code Value = 1. Plaintext connection attempt from an SSL enabled client?
Apache Derby Network Server - 10.3.3.1 - (1) shutdown at {2}
</pre>


<p>
Messages on the client side appear as follows. (Note that the version
info about the product changes depending on the release being used
for the client.)
</p>


<pre>
Invalid reply header from network server: Invalid string . Plaintext connection attempt to an SSL enabled server?
Apache Derby Network Server - 10.7.1.0 - (1) shutdown
</pre>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
10.3 (and earlier) versions do not support shutdown commands with
credentials. The credential-bearing shutdown command was introduced in
10.4 and requires network
protocol level 2.
10.3 and earlier versions understand protocol level 1 and do not recognize the credential-bearing
shutdown command. Because of this, a 10.4 (or higher) client
can't shutdown a 10.3 (or lower) server. With DERBY-4786, a 10.7 client
will first try the shutdown at protocol level 2. If that does not
succeed, then the 10.7 client will send the shutdown at protocol level 1.
This fix has been backported to the 10.4, 10.5, and 10.6
branches also. Future releases on those branches will enjoy this ability to
successfully shutdown 10.3 (and earlier) servers.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4777"></a>Note for DERBY-4777</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
When a network client attempts to update through an invalid cursor,
Derby now throws 'ERROR 42X30' instead of 'ERROR XJ202'.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
In previous releases, Derby threw 'ERROR XJ202' when a network client
tried to update through a closed or nonexistent cursor.
For a cursor named "JDK4", the detailed message was "ERROR XJ202: Invalid cursor name 'JDK4'."
If you are running 10.7, however, Derby now throws 'ERROR 42X30'
instead, and the detailed message is "ERROR 42X30: Cursor 'JDK4' not found. Verify that autocommit is OFF."
</p>


<p>
From now on, DERBY performs identically in Client and Embedded modes 
when you attempt to update through a closed or nonexistent cursor.
</p>


<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>
Applications may fail if they expect 'ERROR XJ202' to be thrown
in this situation.
</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
This change was made so that the Client and Embedded behavior would be similar.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
If applications need to track updates through invalid cursors, those
applications should look for 'ERROR 42X30' regardless of whether they
run in Client or Embedded mode.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4772"></a>Note for DERBY-4772</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
Column types in the XPLAIN tables changed to accommodate more data.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
None.
</p>


<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>
None, but keeping the old table definitions for the XPLAIN tables may result in data truncation errors (see DERBY-4772 and DERBY-4673).
</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
Amount of recorded data was too large to fit into the old column definitions.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
It is recommended to drop existing XPLAIN tables and have them recreated with the new table definitions. This can be done by disabling the XPLAIN feature, dropping the tables, and then enable the XPLAIN feature again. Alternatively, if you want to keep existing data, specify a different schema to save XPLAIN data in.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4577"></a>Note for DERBY-4577</h3>
<blockquote>


<h4>Summary of Change</h4>

<p>
  UPDATE statements should not raise the following error: "ERROR nospc: nospc.U"
</p>



<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
  An UPDATE of a row which spans multiple pages can fail, raising
  "ERROR nospc: nospc.U".  This error should never be returned to the client.
  The error is very timing and data dependent, and has been encountered
  in only a few applications.

</p>




<h4>Rationale for Change</h4>

<p>
  UPDATES of rows may fail in some cases, returning this error
which clients should never see.
</p>



<h4>Application Changes Required</h4>

<p>
  After applying the fix, clients should not see this error.
  To ensure that updates of existing rows no longer see this error,
  run the SYSCS_UTIL.SYSCS_COMPRESS_TABLE() system procedure on your tables.
You may want to defensively
compress all of your tables. Alternatively,
  it is also ok to wait and see if the error occurs and then only compress
  the tables that encounter the error.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-4314"></a>Note for DERBY-4314</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
Derby client <tt>Connection.setTransactionIslation</tt> will not commit if isolation level does not change.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
Applications relying on <tt>Connection.setTransactionIsolation</tt> to commit transactions, may see either errors related to transactions in progress or transactions that fail to commit. 
</p>


<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->


<h4>Incompatibilities with Previous Release</h4>

<p>
Before 10.6.1.0, derby client <tt>Connection.setTransactionIsolation</tt> would commit even if isolation has not changed. Starting with 10.6.1.0, derby client <tt>Connection.setTransactionIsolatin</tt> does not commit if the isolation has not changed.
</p>


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
The change was made to client to match behavior of the embedded driver and to improve client performance.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
Applications should not rely on transactions change based on calling <tt>Connection.setTransactionIsolation</tt>. An explicit commit should be called to ensure transactions commit.
</p>



</blockquote>
<hr>
<h3>
<a name="Note for DERBY-1511"></a>Note for DERBY-1511</h3>
<blockquote>

<!-- 
  SUMMARIZE THE ISSUE. This is a one line summary of the issue.

  For instance:

  Applications may no longer open two InputStreams on the same ResultSet column.
-->


<h4>Summary of Change</h4>

<p>
Queries will not bulk fetch rows with large object columns if the
cursor is holdable.
</p>


<!-- 
  DESCRIBE WHAT IT IS THAT THE USER ACTUALLY SEES WHEN THE PROBLEM OCCURS.

  For instance:

  In the previous release, applications were able to open two
  InputStreams on the same column. Depending on how these streams
  interacted, the value siphoned out of the column was erratic. Now
  Derby raises a SQLException when the application attempts to create
  the second InputStream.
-->


<h4>Symptoms Seen by Applications Affected by Change</h4>

<p>
Queries that perform full table scans in order to fetch relatively
small BLOB or CLOB values, may need longer time to complete than they
did in previous releases. This only affects queries that are executed
on a <code>Statement</code> (or <code>PreparedStatement</code>
or <code>CallableStatement</code>) that has
the <code>ResultSet.HOLD_CURSORS_OVER_COMMIT</code> flag set.
</p>

<!-- 
  OPTIONAL: DESCRIBE INCOMPATIBILITIES WITH PREVIOUS RELEASE, IF ANY.

  For instance:

  Applications which open two InputStreams on the ResultSet column now
  fail.
-->

<!--h4>Incompatibilities with Previous Release</h4>
<p>
????
</p-->


<!-- 
  DESCRIBE WHY THE CHANGE WAS MADE.

  For instance:

  The previous behavior violated the JDBC standard. The new behavior
  is correct.
-->


<h4>Rationale for Change</h4>

<p>
The bulk fetching that happened in previous releases, was not a safe
optimization if the fetched rows contained large object columns (BLOB
or CLOB) and the cursor was holdable. If the transaction was committed
in the middle of a scan, the pre-fetched large objects cached inside
the scan would be closed, and they would not be valid for use when
they were later returned to the application. To prevent certain ways
to access large objects from failing, the optimization was disabled
for the cases where it was not known to be safe.
</p>


<!-- 
  OPTIONAL: DESCRIBE HOW TO REVERT TO THE PREVIOUS BEHAVIOR OR
  OTHERWISE AVOID THE INCOMPATIBILITIES INTRODUCED BY THIS CHANGE.

  For instance:

  Users must recode applications which open multiple streams on the same column.
-->


<h4>Application Changes Required</h4>

<p>
The queries affected by this change will run with no performance
degradation compared to previous releases if the application can be
rewritten to use non-holdable cursors. This can be achieved by
calling <code>Connection.setHoldability()</code> with
the <code>ResultSet.CLOSE_CURSORS_AT_COMMIT</code> flag before
creating the statement instance, or by supplying that flag
to <code>Connection</code>'s <code>createStatement()</code>,
<code>prepareStatement()</code> or <code>prepareCall()</code> method
in the <code>resultSetHoldability</code> parameter.
</p>


<p>
Alternatively, if all the BLOB and CLOB values in the table in
question are small enough to fit in a VARCHAR FOR BIT DATA column or
in a VARCHAR column, one may change the type of the LOB columns to one
of these other data types, and the query will again be allowed to use
the bulk fetch optimization.
</p>


</blockquote>
</blockquote>
<h2>
<a name="Build Environment"></a>Build Environment</h2>
<blockquote>
<p>Derby release 10.7.1.1 was built using the following environment:</p>
<ul>
<li>
<b>Branch</b> - Source code came from the 10.7 branch.</li>
<li>
<b>Machine</b> - Mac OS X 10.5.8.</li>
<li>
<b>Ant</b> - Apache Ant version 1.7.1 compiled on June 27 2008.</li>
<li>
<b>JDK 1.4</b> - Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_22-b02-329).</li>
<li>
<b>Java 6</b> - Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-9M3125).</li>
<li>
<b>Compiler</b> - The 1.6.0_17-b04-248-9M3125 javac was used to compile all classes.</li>
<li>
<b>JSR 169</b> - J2ME support was built using libraries from phoneME Advanced Milestone Release 2.</li>
</ul>
</blockquote>
<h2>
<a name="Verifying Releases"></a>Verifying Releases</h2>
<blockquote>


<p>It is essential that you verify the integrity of the downloaded
files using the PGP and MD5 signatures.  MD5 verification ensures the
file was not corrupted during the download process.  PGP verification
ensures that the file came from a certain person.</p>


<p>The PGP signatures can be verified using
<a href="http://www.pgpi.org/">PGP</a> or
<a href="http://www.gnupg.org/">GPG</a>.
First download the Apache Derby
<a href="http://svn.apache.org/repos/asf/db/derby/code/trunk/KEYS">KEYS</a>
as well as the <code>asc</code> signature file for the particular
distribution. It is important that you get these files from the ultimate
trusted source - the main ASF distribution site, rather than from a mirror.
Then verify the signatures using ...</p>


<pre>
% pgpk -a KEYS
% pgpv db-derby-X.Y.tar.gz.asc

<em>or</em>

% pgp -ka KEYS
% pgp db-derby-X.Y.tar.gz.asc

<em>or</em>

% gpg --import KEYS
% gpg --verify db-derby-X.Y.tar.gz.asc

</pre>


<p>To verify the MD5 signature on the files, you need to use a program
called <code>md5</code> or <code>md5sum</code>, which is
included in many unix distributions.  It is also available as part of
<a href="http://www.gnu.org/software/textutils/textutils.html">GNU
Textutils</a>.  Windows users can get binary md5 programs from <a href="http://www.fourmilab.ch/md5/">here</a>, <a href="http://www.pc-tools.net/win32/freeware/console/">here</a>, or
<a href="http://www.slavasoft.com/fsum/">here</a>.</p>


<p>We strongly recommend that you verify your downloads with both PGP and MD5.</p>



</blockquote>
</body>
</html>
